﻿#define _CRT_SECURE_NO_WARNINGS 
#include"class.h"
//int main()
//{
//	//const char* str = "abcdefg";
//	//string s(str);
//	//string s2 = s;
//	//string s3 = "fghjkl";
//	//s2 = s3;
//	//const char* str = "abcdef";
//	//string s(str);
//	//s += 'g';
//	//s.append("12345");
//	string s("abcd");
//	s.append("1234");
//	std::cout << s.c_str() << std::endl;
//	s += '5';
//	std::cout << s.c_str() << std::endl;
//	s += "678";
//	std::cout << s.c_str() << std::endl;
//	s.erase(0, 1);
//	std::cout << s.c_str() << std::endl;
//	return 0;
//}
//using namespace std;
//class Person
//{
//public:
//	virtual void  BuyTicket()
//	{
//		cout << "全价" << endl;
//	}
//};
//class Student :public Person
//{
//public:
//	void BuyTicket()
//	{
//		cout << "半价" << endl;
//	}
//};
//void fun(Person& p)
//{
//	p.BuyTicket();
//}
//int main()
//{
//	Person p;
//	Student s;
//	fun(p);
//	fun(s);
//	return 0;
//}

//class A
//{
//public:
//	virtual void func(int val = 1) { std::cout << "A->" << val << std::endl; }
//	virtual void test() { func(); }
//};
//class B : public A
//{
//public:
//	void func(int val = 0) { std::cout << "B->" << val << std::endl; }
//};
//class Base
//{
//public:
//	virtual void Func1()
//	{
//		cout << "Func1()" << endl;
//	}
//protected:
//	int _b = 1;
//	char _ch = 'x';
//};
//int main(int argc, char* argv[])
//{
//	Base b;
//	cout << sizeof(b) << endl;
//	return 0;
//}

void test_vector1()
{
	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);
	print(v);
}
void test_vector2()
{
	vector<int> v1(5, 1);
	vector<int> v2 = v1;//拷贝构造;
	vector<int> v3(5, 2);
	v1 = v3;  //赋值重载;
	print(v1);
	print(v2);
	print(v3);
}
void test_vector3()
{
	vector<int> v;
	v.push_back(1);
	v.insert(v.end(), 2);
	v.insert(v.end(), 3);
	v.insert(v.end(), 4);
	v.insert(v.end(), 5);
	v.erase(v.end());
	v.erase(v.end());
	v.erase(v.end());
	v.erase(v.end());
	v.insert(v.begin(),2);
	v.insert(v.begin(), 3);
	v.insert(v.begin(), 4);
	v.insert(v.begin(), 5);
	print(v);
}
//void test_vector4()
//{
//	vector<string> v;
//	v.push_back("11111111111111111111");
//	v.push_back("11111111111111111111");
//	v.push_back("11111111111111111111");
//	v.push_back("11111111111111111111");
//	print(v);
//
//	v.push_back("11111111111111111111");
//	print(v);
//}

//void test_list1()
//{
//	list<int> l1;
//	l1.push_back(1);
//	l1.push_back(2);
//	l1.push_back(3);
//	l1.push_back(4);
//	print(l1);
//}
void testBSTree1()
{
	BSTree<int, int> t;
	//t1.Insert(15, 2);
	//t1.Insert(8, 2);
	//t1.Insert(20, 2);
	////t1.erase(3);
	//t1.Insert(9,2);
	//t1.erase(15);
	//t1.Inorder();
	int a[] = { 8, 3, 1, 10, 1, 6, 4, 7, 14, 13};
	t.Insert(8, 1);
	t.Insert(3, 1);
	t.Insert(1, 1);
	t.Insert(10, 1);
	t.Insert(1, 1);
	t.Insert(6, 1);
	t.Insert(4, 1);
	t.Insert(7, 1);
	t.Insert(14, 1);
	t.Insert(13, 1);
	t.Inorder();

	t.Insert(16,1);
	t.Insert(3,1);
	t.Inorder();

	t.erase(3);
	t.Inorder();

	t.erase(8);
	t.Inorder();

	for (auto e : a)
	{
		t.erase(e);
		t.Inorder();
	}
}
int main()
{
	testBSTree1();
	return 0;
}